package edu.mercer.sse.plainpdf;

import edu.mercer.sse.annotations.Fulfills;

/**
 * Provides access to any output from execution, including return code.<p> 
 *
 * @see Configuration
 */

public interface ExecutionReporting
{
	/**
	 * Get command line output from execution of utility application.<p>
	 * 
	 * @return  String containing output from command execution
	 */
	
	String getOutput();
	
	
	/**
	 * Set output from execution of utility application.<p>
	 * 
	 * @param output - String containing command line output from command 
	 * 	execution
	 * 
	 * @return  this
	 */
	
	ExecutionReporting setOutput( final String output );

	
	/**
	 * Append output from execution of utility application.<p>
	 * 
	 * @param output - String containing command line output from command 
	 * 	execution
	 * 
	 * @return  this
	 */
	
	ExecutionReporting appendOutput( final String output );
	
	
	/**
	 * Get return code from execution of utility application.<p> 
	 * 
	 * @return  Integer representing return code from execution
	 */
	
	Integer getReturnCode();
	

	/**
	 * Set return code from execution of utility application.<p> 
	 * 
	 * @param rc - Integer representing return code from execution
	 * 
	 * @return  this
	 */
	
	ExecutionReporting setReturnCode( final Integer rc );
	
	
	/**
	 * Reminder for override of String for useful printing, logging.<p>
	 * 
	 * Command output and other information from execution of utility 
	 * 	application.<p>
	 * 
	 * @return  String containing output, information useful for debugging, 
	 * 	logging purposes
	 */
	
	@Fulfills("Object")
	@Override
	String toString();
	
	
}//interface
